{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "千帆提供了 Prompt 管理功能，可以快速地使用平台预置的优质 Prompt，或者保存用户自定义的 Prompt。SDK 也为用户快速使用 Prompt 提供了辅助。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Prompt 相关功能需要使用 Access Key 和 Secret Key 进行鉴权，获取方式参见 [文档](https://cloud.baidu.com/doc/Reference/s/9jwvz2egb)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import qianfan\n",
    "\n",
    "os.environ[\"QIANFAN_ACCESS_KEY\"] = \"your access key\"\n",
    "os.environ[\"QIANFAN_SECRET_KEY\"] = \"your secret key\""
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以通过这一方式导入 Prompt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qianfan.common import Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 快速使用"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "平台上预置的 Prompt 以及用户自定义的模型都可以在 [千帆控制台](https://console.bce.baidu.com/qianfan/prompt/template) 获得，之后可以在 SDK 中用 Prompt 的名称快速获取 Prompt 对象。\n",
    "\n",
    "加载平台上的相关资源需要使用 hub 功能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qianfan.common.hub import hub\n",
    "\n",
    "p = hub.load(\"prompt/区域美食推荐\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "之后就可以调用 `render` 方法对 Prompt 模版进行填充，得到最终的文本。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "作为游客，告诉我上海必吃的10大美食\n"
     ]
    }
   ],
   "source": [
    "# 第二个参数是 negative prompt，文生文场景下为空，所以用 _ 省略\n",
    "prompt, _ = p.render(region=\"上海\")\n",
    "print(prompt)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "也可以通过如下方式获得 Prompt 的一些元信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "作为游客，告诉我{region}必吃的10大美食\n",
      "['region']\n"
     ]
    }
   ],
   "source": [
    "print(p.template)\n",
    "print(p.variables)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "SDK 也支持文生图类型的 Prompt，可以通过文生图类的 Prompt 名称进行初始化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "white hair female, close up character design, multiple concept designs, concept design sheet, white background, style of Yoshitaka Amano\n",
      "(worst quality, low quality:1.4), deformed iris, deformed pupils, (deformeddistorted, disfigured:1.3), cropped, out of frame.poorly drawn, bad anatomy, wrong anatomy, extralimb, missing limb, floating limbs\n"
     ]
    }
   ],
   "source": [
    "txt2img_prompt = hub.load(\"prompt/角色设计\")\n",
    "\n",
    "prompt, negative_prompt = txt2img_prompt.render()\n",
    "print(prompt)\n",
    "print(negative_prompt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Prompt 的场景可以通过 `scene_type` 属性获得"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qianfan.consts import PromptSceneType\n",
    "\n",
    "txt2img_prompt.scene_type == PromptSceneType.Text2Image"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "借助 Prompt，我们就可以快速地完成一些任务，比如："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "作为游客，上海必吃的十大美食包括：\n",
      "\n",
      "1. **生煎馒头**：上海特色早餐，鲜肉馅，底部脆硬，整体味道鲜美。\n",
      "2. **小笼包**：上海的小笼包以汤汁丰足、味道醇正著称。\n",
      "3. **蟹壳黄**：上海本地特色小吃，以烤至酥脆的饼皮和咸蛋黄肉馅为主。\n",
      "4. **白斩鸡**：最原汁原味的上海白斩鸡搭配甜酱是最佳的选择。\n",
      "5. **糖醋排骨**：使用传统的糖醋工艺制作的上海特色菜肴，酸甜可口。\n",
      "6. **炸猪排**：与排骨相似的上海特色小吃，通常与番茄酱一起食用。\n",
      "7. **清炒虾仁**：上海的传统名菜，口感鲜美，营养丰富。\n",
      "8. **响油鳝糊**：上海本地的特色鳝鱼美食，味道鲜美，做法相对复杂。\n",
      "9. **三鲜馄饨**：上海的传统小吃，以鲜肉、虾仁和海鲜为主要馅料，味道鲜美。\n",
      "10. **糟卤**：一种特殊的调味料，可以增加食物的鲜美程度，尤其适合海鲜类食品。\n",
      "\n",
      "以上十种美食涵盖了甜、咸、酥、脆、鲜等多种口感，可以满足不同游客的口味。在品尝美食的同时，也可以搭配上海本地的茶点，体验上海的饮食文化。\n"
     ]
    }
   ],
   "source": [
    "import qianfan\n",
    "\n",
    "p = hub.load(\"prompt/区域美食推荐\")\n",
    "\n",
    "def recommend_food(region):\n",
    "    prompt, _ = p.render(region=region)\n",
    "    r = qianfan.Completion().do(prompt)\n",
    "    return r['result']\n",
    "\n",
    "print(recommend_food(\"上海\"))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 本地 Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果不希望使用平台上的模型，只希望本地尝试，也可以通过 Prompt 对象实现，初始化时仅传入 `template` 字段即可。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "本地 prompt hello\n"
     ]
    }
   ],
   "source": [
    "p = Prompt(\"本地 prompt {var1}\")\n",
    "\n",
    "prompt, _ = p.render(var1=\"hello\")\n",
    "print(prompt)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "还可以传入更多参数，创建一个更为复杂的本地 Prompt，比如下面创造了一个场景为文生图的 Prompt，并且给定了分别设置了正向和负向 Prompt，并且采用 `(())` 作为标识符。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt = Prompt(\n",
    "    name=\"txt2img\",\n",
    "    template=\"txt2img template ((v1))\",\n",
    "    scene_type=PromptSceneType.Text2Image,\n",
    "    negative_template=\"negative template ((v3))\",\n",
    "    identifier=\"(())\",\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 上传/更新 Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于本地 Prompt，还可以使用 hub 将其上传保存至平台，方便后续快速使用，上传仅需要利用 `hub.push` 即可。关于 hub 的一些其他操作，可以参考 hub 的相关文档。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = Prompt(\n",
    "    template=\"本地 prompt {var1}\",\n",
    "    # 对于平台上的 prompt 来说，name 是必须的，因此上传前必须先设置\n",
    "    name=\"cookbook_prompt\"\n",
    ")\n",
    "\n",
    "# 也可以通过这种方式设置 name\n",
    "p.name = \"cookbook_prompt\"\n",
    "hub.push(p)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "后续还可以本地对 Prompt 进行更新，并继续用 `hub.push` 方法更新至平台上。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['new_var']\n",
      "('新的 Prompt hello', None)\n"
     ]
    }
   ],
   "source": [
    "p.set_template(\"新的 Prompt {new_var}\")\n",
    "hub.push(p)\n",
    "\n",
    "print(p.variables)\n",
    "print(p.render(new_var=\"hello\"))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 删除 Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "SDK 提供了 `delete` 方法，可以快速删除平台上的 Prompt。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = hub.load(\"prompt/cookbook_prompt\")\n",
    "p.delete()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果没有抛出异常，那么这条 Prompt 已经从平台上移除。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 保存/读取 Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通常在进行 Prompt 调优后，需要保存 Prompt 以便后续使用，SDK 也提供了 `save_to_file` 方法，可以将 Prompt 保存保存至本地。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = Prompt(template=\"这是一个用于{usage}的 Prompt\")\n",
    "p.save_to_file(\"test_prompt.tpl\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "而在再次使用时，只需要通过 `from_file` 方法即可读取 Prompt。\n",
    "\n",
    "如果希望调整 Prompt，可以直接对模版文件修改，从而既可以避免在代码中出现冗长的模版字符串，也可以因调整模版而反复修改代码。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "这是一个用于测试的 Prompt\n"
     ]
    }
   ],
   "source": [
    "p = Prompt.from_file(\"test_prompt.tpl\")\n",
    "prompt, _ = p.render(usage=\"测试\")\n",
    "print(prompt)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 优化 Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了能够提升模型的生成效果，SDK 提供了优化 prompt 的功能，能够快速生成高质量的 prompt。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请撰写一份{job}的年终报告，包括该{job}的概要、成绩和挑衅。请在报告中提供{job}的详细说明和目标，并阐明{job}的成果和挑战。同时，请提供相关数据和指标，以证明{job}的有效性和可操作性。请注意，您的报告应该简洁明了，并包含所有必要的细节和信息，以帮助读者更好地理解{job}的表现和结果。\n"
     ]
    }
   ],
   "source": [
    "old_prompt = Prompt(\"帮我写一份{job}的年终报告\")\n",
    "new_prompt = old_prompt.optimize()\n",
    "print(new_prompt.template)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "优化可以开启不同选项：\n",
    "\n",
    "- `optimize_quality`：优化 prompt 质量\n",
    "- `simplify_prompt`：简化 prompt，可以省去“的”、“吧”等含义不强的文本实体，精炼语料内容并降低推理成本\n",
    "- `iteration_round`：优化迭代轮数，默认为 1\n",
    "- `enable_cot`：开启思维链，将指引模型拆解Prompt内容，逐步进行推理。建议仅在数学计算、逻辑推理等场景下开启使用。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "或者也可以给定一个样例数据集，调用模型对 prompt 进行优化。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[INFO] [04-10 19:35:30] dataset.py:389 [t:139889838559488]: no data source was provided, construct\n",
      "[INFO] [04-10 19:35:30] dataset.py:257 [t:139889838559488]: construct a file data source from path: ./essay.jsonl, with args: {'input_columns': ['question', 'article'], 'reference_column': 'expect'}\n",
      "[INFO] [04-10 19:35:30] file.py:280 [t:139889838559488]: use format type FormatType.Jsonl\n",
      "[INFO] [04-10 19:35:30] utils.py:331 [t:139889838559488]: need create cached arrow file for /root/work/bce-qianfan-sdk/cookbook/essay.jsonl\n",
      "[INFO] [04-10 19:35:30] utils.py:376 [t:139889838559488]: start to write arrow table to /root/.qianfan_cache/dataset/root/work/bce-qianfan-sdk/cookbook/essay.arrow\n",
      "[INFO] [04-10 19:35:30] utils.py:388 [t:139889838559488]: writing succeeded\n",
      "[INFO] [04-10 19:35:30] utils.py:262 [t:139889838559488]: start to get memory_map from /root/.qianfan_cache/dataset/root/work/bce-qianfan-sdk/cookbook/essay.arrow\n",
      "[INFO] [04-10 19:35:30] utils.py:237 [t:139889838559488]: has got a memory-mapped table\n",
      "[INFO] [04-10 19:35:30] dataset_utils.py:377 [t:139889838559488]: prompt template detected, start to check template variables\n",
      "[INFO] [04-10 19:35:30] openapi_requestor.py:336 [t:139888728774400]: requesting llm api endpoint: /chat/ernie_speed\n",
      "[INFO] [04-10 19:35:39] base.py:92 [t:139888728774400]: All tasks finished, exeutor will be shutdown\n",
      "[INFO] [04-10 19:35:39] prompt.py:609 [t:139889838559488]: Feedback input: '我正在编写prompt\\n\\n**我现在的prompt是**：\\n\\n    请帮我批改如下高考作文，给出评价和评分（0-70分）：\\n                高考作文评分批改分为基础等级、发展等级、关于作文的其他项评定\\n1、基础等级\\n基础等级分内容和表达两项。\\n1）内容项\\n具体评分规则如下：符合题意、中心突出、内容充实、思想健康、感情真挚为一等，可按16-20分酌情给分；符合题意、主题明确、内容较充实、思想健康、感情真实为二等，可按11-15分酌情给分；基本符合题意、中心基本明确、内容单薄、思想基本健康、感情基本真实为三等，可按6-10分酌情给分；偏离题意、中心不明确、内容不当、思想不健康、感情虚假为四等，可按0-5分酌情给分。\\n2）表达项\\n具体评分规则如下：符合文体要求、结构严谨、语言流畅、字迹工整为一等，可按16-20分酌情给分；符合文体要求、结构完整、语言通顺、字迹清楚为二等，可按11-15分酌情给分；基本符合文体要求、结构基本完整、语言基本通顺、字迹基本清楚为三等，可按6-10分酌情给分；不符合文体要求、结构混乱、语言不通顺语病多、字迹潦草难辨为四等，可按0-5分酌情给分。\\n2、发展等级\\n基础等级分要与发展等级分相匹配，发展等级分不能跨越基础等级的得分等级。\\n具体评分规则如下：深刻、丰富、有文采、有创意为一等，可按16-20分酌情给分；较深刻、较丰富、较有文采、较有创意为二等，可按11-15分酌情给分；略显深刻、略显丰富、略显文采、略显创意为三等，可按6-10分酌情给分；个别语句有深意、个别例子较好、个别语句较精彩、个别地方有深意为四等，可按0-5分酌情给分。\\n3、关于作文的其他项评定\\n1）扣分项评定\\n出现错别字，1个错别字扣1分，重复不计，扣完5分为止;标点符号出现3处以上错误的酌情扣分;不足字数者，每少50字扣1分;无标题扣2分。\\n2）残篇评定\\n400字以上的文章，按评分标准评分，扣字数分。(少50个字扣1分)\\n400字以下的文章，20分以下评分，不再扣字数分。\\n200字以下的文章，10分以下评分，不再扣字数分。\\n只写一两句话的，给1分或2分，不评0分。\\n只写标题的，给1分或2分，不评0分。\\n完全空白的，评0分。\\n        题目：{question}\\n        作文内容：{article}\\n\\n**我尝试的输入**：\\n{\\n    \"question\": \"你注意到了吗？装鲜牛奶的容器一般是方盒子，装矿泉水的容器一般是圆瓶子，装酒圆瓶子又一般放在方盒子里，方圆之间，各得其妙，古诗云：方圆虽异器，功用信具呈。人生也是如此，所谓：上善若水任方圆。以方圆为话题，根据此材料，题目自拟写作文，字数不少于800字。\",\\n    \"article\": \"\\\\n方圆之间的人生智慧\\\\n\\\\n“方有止，圆有旋。”这句古人的智慧结晶，揭示了方与圆两种形态背后的深刻内涵。在生活中，我们常常见到方形的容器装着鲜牛奶，圆形的瓶子则装着矿泉水，而圆形的酒瓶又常常被放置在方形的盒子里。这些看似简单的形状，实际上蕴含着人生的哲理。\\\\n\\\\n方，代表着规矩、原则和稳定。它象征着秩序和安定，是我们生活中不可或缺的一部分。在人的成长过程中，我们需要遵循各种规矩，学会遵守社会的秩序，这样才能在社会中立足。正如牛奶需要方形的容器来保持稳定一样，我们的人生也需要方正的品格来支撑。\\\\n\\\\n然而，人生并非只有方的一面。圆，代表着变通、灵活和包容。它象征着和谐与圆满，是我们在面对复杂世界时的有力武器。我们需要学会圆滑处事，善于变通，这样才能在人生的道路上走得更远。就像矿泉水需要圆形的瓶子来适应各种环境一样，我们的人生也需要圆润的智慧来应对各种挑战。\\\\n\\\\n方圆之间，各得其妙。在人生的道路上，我们需要既要方正又要圆润。我们要有坚定的原则和信念，同时也要学会适应环境，灵活应对。这样才能在人生的舞台上大放异彩。\\\\n\\\\n上善若水任方圆。水，是世界上最柔软的物质，却能穿透坚硬的石头。这就是因为水懂得方圆之间的智慧。它既可以是方形的湖泊，也可以是圆形的河流，还可以是无形的雾气。水无常形，但却能包容万物。同样，我们也要有水的智慧，懂得在方圆之间寻找平衡，这样才能在人生的道路上游刃有余。\\\\n\\\\n总之，方圆之间的人生智慧是我们每个人都需要学习和领悟的。我们要学会在坚持原则和灵活变通之间找到平衡，这样才能在人生的道路上不断前行。同时，我们也要像水一样包容万物，接纳不同的观点和文化，让自己的人生更加丰富多彩。\\\\n\\\\n在这个充满变化和挑战的世界里，我们需要不断学习和成长，不断提升自己的能力和素质。只有这样，我们才能在方圆之间的人生舞台上展现出自己的风采和智慧。让我们一起努力，成为拥有方圆智慧的人，为自己的人生添彩！\\\\n    \"\\n}\\n\\n**我期望得到的输出**：\\n{\"详细解析\": {\\n        \"内容项\": {\\n            \"解析\": \"论文紧扣主题，围绕“方圆”展开了人生哲理的论述。文章结构清晰，中心明确，内容较为充实，思想健康，感情真实。但内容有些单薄，对于方圆之间的哲理和例证分析不够深入。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"14分\"\\n        },\\n        \"表达项\": {\\n            \"解析\": \"文章整体结构完整，条理性较好，语言通顺，未发现字迹不清的问题。然而，文章在表达上缺乏语言的多样性和文采，表述有些平淡。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"13分\"\\n        },\\n        \"发展等级\": {\\n            \"解析\": \"文章较为成功地运用了材料中的“方圆”概念，体现出一定的创意。但整体深度和文采不足，缺少引人深思的论点和生动的例证，内容的深刻性和丰富性有待提升。\",\\n            \"等级\": \"三等\",\\n            \"得分\": \"9分\"\\n        },\\n        \"扣分项和残篇评定\": {\\n            \"解析\": \"文章结构完整，字数达标，没有字数扣分。文中未发现错别字和严重的标点符号错误，无需扣分。\",\\n            \"扣分\": \"0分\"\\n        }\\n    },\\n    \"缺点和改进意见\": {\\n        \"缺点\": \"文章在内容上对于“方圆”哲理的讨论较为表面，缺少深入挖掘和具体生动的例子支撑。在表达上，文章语言欠缺变化和文采，没有达到令人印象深刻的效果。\",\\n        \"改进意见\": \"应在内容上加入更多、更深入的分析和论证，例如，具体场景中方与圆的应用和相辅相成的关系。语言上尝试使用更加生动多样的修辞手法以增强文采，使文章更加引人入胜。\"\\n    },\\n    \"最终得分\": \"36分\"\\n    }\\n\\n**模型的输出是**：\\n首先，对这篇作文的整体评价是内容紧扣题目要求，逻辑清晰，语言流畅，展现了对比和分析的能力。对于题目提出的“方圆之间的人生智慧”，作者进行了深入浅出的阐述，将方圆与人生智慧紧密结合，表达了深刻的思考。结合评分标准来看，我会给出以下具体评分：\\n\\n一、基础等级评分：\\n\\n内容项：文章完全符合题意，主题明确，中心突出，内容充实，思想健康，感情真挚。因此，可评为一等，得分范围为16-20分。\\n\\n表达项：文章结构严谨，语言流畅，字迹工整。符合文体要求，表达出色。可评为一等，得分范围为16-20分。\\n\\n二、发展等级评分：\\n\\n文章在深刻、丰富、有文采、有创意等方面都表现出色。作者通过对比和分析方圆之间的智慧，揭示了人生的哲理，见解独到，论证深刻。因此，可评为一等，得分范围为16-20分。\\n\\n三、其他项评定：\\n\\n扣分项评定：全文中没有出现错别字、标点符号错误。字数达到了800字以上，没有扣字数分。\\n\\n综上所述，本文的基础等级得分和发展等级得分均为高分，总体评分应该在50分以上。具体得分还需要根据当地阅卷标准和阅卷老师的主观判断进行微调。总的来说，这是一篇质量较高的作文。\\n\\n===\\n\\n根据我期望得到的输出和模型的输出，告诉我几个理由为什么这个 prompt 并不能很好的完成这个任务'\n",
      "[INFO] [04-10 19:35:39] openapi_requestor.py:336 [t:139889838559488]: requesting llm api endpoint: /chat/completions_pro\n",
      "[INFO] [04-10 19:36:14] prompt.py:621 [t:139889838559488]: Feedback output: '这个prompt在尝试完成作文批改任务时存在几个关键问题，导致它不能很好地完成预期的任务。以下是几个主要理由：\\n\\n1. **详细的评分标准应用不足**：\\n   - Prompt中虽然提供了详细的评分标准，但在实际应用中，模型并没有严格按照这些标准来评分。例如，在期望的输出中，内容项和表达项都被评为二等，发展等级为三等，但在模型的输出中，所有项都被评为一等。这表明模型没有充分理解和应用评分标准中的细微差别。\\n\\n2. **对作文内容的深度分析不够**：\\n   - 模型的输出缺乏对作文内容的深度分析。在期望的输出中，有对作文内容的具体解析，指出了作文在论述方圆哲理时的不足。然而，模型的输出只是泛泛地称赞了作文的内容，没有提供具体的分析或批评。\\n\\n3. **缺乏扣分项的具体评定**：\\n   - Prompt中明确要求对扣分项进行评定，包括错别字、标点符号错误、字数不足等。但在模型的输出中，虽然提到了没有错别字和标点符号错误，但没有对扣分项进行具体的分析和评定，也没有提及字数是否达标。\\n\\n4. **评分结果的主观性与标准化冲突**：\\n   - 作文批改本质上是一个包含主观判断的过程，但prompt试图将其标准化，通过详细的评分规则来指导模型。然而，模型在处理这种任务时似乎更倾向于给出一般性的积极评价，而不是严格根据评分标准来给出具体的分数和等级。\\n\\n5. **对改进意见的忽视**：\\n   - 在期望的输出中，包括了针对作文的缺点和改进意见，这是作文批改中很重要的一部分。然而，在模型的输出中，并没有提供这样的反馈，只是简单地给出了一个总体评价和一些一般性的赞扬。\\n\\n综上所述，这个prompt在指导模型进行作文批改时遇到了挑战，主要是因为模型在处理复杂的评分标准、深度内容分析、扣分项评定以及提供具体改进意见等方面存在不足。这可能需要更精细的模型设计和更详细的训练数据来改进。'\n",
      "[INFO] [04-10 19:36:14] prompt.py:634 [t:139889838559488]: Update input: '我正在编写prompt\\n\\n**我现在的prompt是**：\\n\\n    请帮我批改如下高考作文，给出评价和评分（0-70分）：\\n                高考作文评分批改分为基础等级、发展等级、关于作文的其他项评定\\n1、基础等级\\n基础等级分内容和表达两项。\\n1）内容项\\n具体评分规则如下：符合题意、中心突出、内容充实、思想健康、感情真挚为一等，可按16-20分酌情给分；符合题意、主题明确、内容较充实、思想健康、感情真实为二等，可按11-15分酌情给分；基本符合题意、中心基本明确、内容单薄、思想基本健康、感情基本真实为三等，可按6-10分酌情给分；偏离题意、中心不明确、内容不当、思想不健康、感情虚假为四等，可按0-5分酌情给分。\\n2）表达项\\n具体评分规则如下：符合文体要求、结构严谨、语言流畅、字迹工整为一等，可按16-20分酌情给分；符合文体要求、结构完整、语言通顺、字迹清楚为二等，可按11-15分酌情给分；基本符合文体要求、结构基本完整、语言基本通顺、字迹基本清楚为三等，可按6-10分酌情给分；不符合文体要求、结构混乱、语言不通顺语病多、字迹潦草难辨为四等，可按0-5分酌情给分。\\n2、发展等级\\n基础等级分要与发展等级分相匹配，发展等级分不能跨越基础等级的得分等级。\\n具体评分规则如下：深刻、丰富、有文采、有创意为一等，可按16-20分酌情给分；较深刻、较丰富、较有文采、较有创意为二等，可按11-15分酌情给分；略显深刻、略显丰富、略显文采、略显创意为三等，可按6-10分酌情给分；个别语句有深意、个别例子较好、个别语句较精彩、个别地方有深意为四等，可按0-5分酌情给分。\\n3、关于作文的其他项评定\\n1）扣分项评定\\n出现错别字，1个错别字扣1分，重复不计，扣完5分为止;标点符号出现3处以上错误的酌情扣分;不足字数者，每少50字扣1分;无标题扣2分。\\n2）残篇评定\\n400字以上的文章，按评分标准评分，扣字数分。(少50个字扣1分)\\n400字以下的文章，20分以下评分，不再扣字数分。\\n200字以下的文章，10分以下评分，不再扣字数分。\\n只写一两句话的，给1分或2分，不评0分。\\n只写标题的，给1分或2分，不评0分。\\n完全空白的，评0分。\\n        题目：{question}\\n        作文内容：{article}\\n\\n**我尝试的输入**：\\n{\\n    \"question\": \"你注意到了吗？装鲜牛奶的容器一般是方盒子，装矿泉水的容器一般是圆瓶子，装酒圆瓶子又一般放在方盒子里，方圆之间，各得其妙，古诗云：方圆虽异器，功用信具呈。人生也是如此，所谓：上善若水任方圆。以方圆为话题，根据此材料，题目自拟写作文，字数不少于800字。\",\\n    \"article\": \"\\\\n方圆之间的人生智慧\\\\n\\\\n“方有止，圆有旋。”这句古人的智慧结晶，揭示了方与圆两种形态背后的深刻内涵。在生活中，我们常常见到方形的容器装着鲜牛奶，圆形的瓶子则装着矿泉水，而圆形的酒瓶又常常被放置在方形的盒子里。这些看似简单的形状，实际上蕴含着人生的哲理。\\\\n\\\\n方，代表着规矩、原则和稳定。它象征着秩序和安定，是我们生活中不可或缺的一部分。在人的成长过程中，我们需要遵循各种规矩，学会遵守社会的秩序，这样才能在社会中立足。正如牛奶需要方形的容器来保持稳定一样，我们的人生也需要方正的品格来支撑。\\\\n\\\\n然而，人生并非只有方的一面。圆，代表着变通、灵活和包容。它象征着和谐与圆满，是我们在面对复杂世界时的有力武器。我们需要学会圆滑处事，善于变通，这样才能在人生的道路上走得更远。就像矿泉水需要圆形的瓶子来适应各种环境一样，我们的人生也需要圆润的智慧来应对各种挑战。\\\\n\\\\n方圆之间，各得其妙。在人生的道路上，我们需要既要方正又要圆润。我们要有坚定的原则和信念，同时也要学会适应环境，灵活应对。这样才能在人生的舞台上大放异彩。\\\\n\\\\n上善若水任方圆。水，是世界上最柔软的物质，却能穿透坚硬的石头。这就是因为水懂得方圆之间的智慧。它既可以是方形的湖泊，也可以是圆形的河流，还可以是无形的雾气。水无常形，但却能包容万物。同样，我们也要有水的智慧，懂得在方圆之间寻找平衡，这样才能在人生的道路上游刃有余。\\\\n\\\\n总之，方圆之间的人生智慧是我们每个人都需要学习和领悟的。我们要学会在坚持原则和灵活变通之间找到平衡，这样才能在人生的道路上不断前行。同时，我们也要像水一样包容万物，接纳不同的观点和文化，让自己的人生更加丰富多彩。\\\\n\\\\n在这个充满变化和挑战的世界里，我们需要不断学习和成长，不断提升自己的能力和素质。只有这样，我们才能在方圆之间的人生舞台上展现出自己的风采和智慧。让我们一起努力，成为拥有方圆智慧的人，为自己的人生添彩！\\\\n    \"\\n}\\n\\n**我期望得到的输出**：\\n{\"详细解析\": {\\n        \"内容项\": {\\n            \"解析\": \"论文紧扣主题，围绕“方圆”展开了人生哲理的论述。文章结构清晰，中心明确，内容较为充实，思想健康，感情真实。但内容有些单薄，对于方圆之间的哲理和例证分析不够深入。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"14分\"\\n        },\\n        \"表达项\": {\\n            \"解析\": \"文章整体结构完整，条理性较好，语言通顺，未发现字迹不清的问题。然而，文章在表达上缺乏语言的多样性和文采，表述有些平淡。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"13分\"\\n        },\\n        \"发展等级\": {\\n            \"解析\": \"文章较为成功地运用了材料中的“方圆”概念，体现出一定的创意。但整体深度和文采不足，缺少引人深思的论点和生动的例证，内容的深刻性和丰富性有待提升。\",\\n            \"等级\": \"三等\",\\n            \"得分\": \"9分\"\\n        },\\n        \"扣分项和残篇评定\": {\\n            \"解析\": \"文章结构完整，字数达标，没有字数扣分。文中未发现错别字和严重的标点符号错误，无需扣分。\",\\n            \"扣分\": \"0分\"\\n        }\\n    },\\n    \"缺点和改进意见\": {\\n        \"缺点\": \"文章在内容上对于“方圆”哲理的讨论较为表面，缺少深入挖掘和具体生动的例子支撑。在表达上，文章语言欠缺变化和文采，没有达到令人印象深刻的效果。\",\\n        \"改进意见\": \"应在内容上加入更多、更深入的分析和论证，例如，具体场景中方与圆的应用和相辅相成的关系。语言上尝试使用更加生动多样的修辞手法以增强文采，使文章更加引人入胜。\"\\n    },\\n    \"最终得分\": \"36分\"\\n    }\\n\\n**模型的输出是**：\\n首先，对这篇作文的整体评价是内容紧扣题目要求，逻辑清晰，语言流畅，展现了对比和分析的能力。对于题目提出的“方圆之间的人生智慧”，作者进行了深入浅出的阐述，将方圆与人生智慧紧密结合，表达了深刻的思考。结合评分标准来看，我会给出以下具体评分：\\n\\n一、基础等级评分：\\n\\n内容项：文章完全符合题意，主题明确，中心突出，内容充实，思想健康，感情真挚。因此，可评为一等，得分范围为16-20分。\\n\\n表达项：文章结构严谨，语言流畅，字迹工整。符合文体要求，表达出色。可评为一等，得分范围为16-20分。\\n\\n二、发展等级评分：\\n\\n文章在深刻、丰富、有文采、有创意等方面都表现出色。作者通过对比和分析方圆之间的智慧，揭示了人生的哲理，见解独到，论证深刻。因此，可评为一等，得分范围为16-20分。\\n\\n三、其他项评定：\\n\\n扣分项评定：全文中没有出现错别字、标点符号错误。字数达到了800字以上，没有扣字数分。\\n\\n综上所述，本文的基础等级得分和发展等级得分均为高分，总体评分应该在50分以上。具体得分还需要根据当地阅卷标准和阅卷老师的主观判断进行微调。总的来说，这是一篇质量较高的作文。\\n\\n**但是存在这些问题**：\\n这个prompt在尝试完成作文批改任务时存在几个关键问题，导致它不能很好地完成预期的任务。以下是几个主要理由：\\n\\n1. **详细的评分标准应用不足**：\\n   - Prompt中虽然提供了详细的评分标准，但在实际应用中，模型并没有严格按照这些标准来评分。例如，在期望的输出中，内容项和表达项都被评为二等，发展等级为三等，但在模型的输出中，所有项都被评为一等。这表明模型没有充分理解和应用评分标准中的细微差别。\\n\\n2. **对作文内容的深度分析不够**：\\n   - 模型的输出缺乏对作文内容的深度分析。在期望的输出中，有对作文内容的具体解析，指出了作文在论述方圆哲理时的不足。然而，模型的输出只是泛泛地称赞了作文的内容，没有提供具体的分析或批评。\\n\\n3. **缺乏扣分项的具体评定**：\\n   - Prompt中明确要求对扣分项进行评定，包括错别字、标点符号错误、字数不足等。但在模型的输出中，虽然提到了没有错别字和标点符号错误，但没有对扣分项进行具体的分析和评定，也没有提及字数是否达标。\\n\\n4. **评分结果的主观性与标准化冲突**：\\n   - 作文批改本质上是一个包含主观判断的过程，但prompt试图将其标准化，通过详细的评分规则来指导模型。然而，模型在处理这种任务时似乎更倾向于给出一般性的积极评价，而不是严格根据评分标准来给出具体的分数和等级。\\n\\n5. **对改进意见的忽视**：\\n   - 在期望的输出中，包括了针对作文的缺点和改进意见，这是作文批改中很重要的一部分。然而，在模型的输出中，并没有提供这样的反馈，只是简单地给出了一个总体评价和一些一般性的赞扬。\\n\\n综上所述，这个prompt在指导模型进行作文批改时遇到了挑战，主要是因为模型在处理复杂的评分标准、深度内容分析、扣分项评定以及提供具体改进意见等方面存在不足。这可能需要更精细的模型设计和更详细的训练数据来改进。\\n\\n===\\n\\n基于以上问题和期望的输出，为我编写一个新的 prompt，涉及的变量用 {question} {article} 表示，整个prompt由<START>和<END>包裹：\\n'\n",
      "[INFO] [04-10 19:36:14] openapi_requestor.py:336 [t:139889838559488]: requesting llm api endpoint: /chat/completions_pro\n",
      "[INFO] [04-10 19:37:05] prompt.py:647 [t:139889838559488]: Update output: '<START>\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n1. **内容与主题**（满分20分）：\\n   - 评估作文是否紧扣题目要求，中心是否突出，内容是否充实、健康，并真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定（一等：16-20分，二等：11-15分，三等：6-10分，四等：0-5分）。\\n\\n2. **表达与语言**（满分20分）：\\n   - 评估作文的结构是否严谨，语言是否流畅、准确，字迹是否工整。\\n   - 注意检查是否有错别字、标点符号错误等，并进行相应扣分（每个错别字扣1分，重复不计，扣完5分为止；标点符号错误酌情扣分）。\\n   - 根据表达的质量、语言的准确性和文采，给出相应的分数和等级评定。\\n\\n3. **发展与创新**（满分20分）：\\n   - 评估作文是否展现出深刻的见解、丰富的例证、独特的创意和文采。\\n   - 根据作文在思想深度、例证丰富性、创意和文采方面的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分，每少50字扣1分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分（如400字以上按正常标准评分后扣字数分，400字以下在20分以下评分，不再扣字数分等）。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分70分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。<END>\\n\\n这个新prompt更详细地说明了批改的各个方面和评分标准，同时也强调了给出具体改进意见的重要性。希望这能帮助模型更准确地完成作文批改任务。'\n",
      "[INFO] [04-10 19:37:05] prompt.py:656 [t:139889838559488]: New prompt: '\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n1. **内容与主题**（满分20分）：\\n   - 评估作文是否紧扣题目要求，中心是否突出，内容是否充实、健康，并真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定（一等：16-20分，二等：11-15分，三等：6-10分，四等：0-5分）。\\n\\n2. **表达与语言**（满分20分）：\\n   - 评估作文的结构是否严谨，语言是否流畅、准确，字迹是否工整。\\n   - 注意检查是否有错别字、标点符号错误等，并进行相应扣分（每个错别字扣1分，重复不计，扣完5分为止；标点符号错误酌情扣分）。\\n   - 根据表达的质量、语言的准确性和文采，给出相应的分数和等级评定。\\n\\n3. **发展与创新**（满分20分）：\\n   - 评估作文是否展现出深刻的见解、丰富的例证、独特的创意和文采。\\n   - 根据作文在思想深度、例证丰富性、创意和文采方面的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分，每少50字扣1分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分（如400字以上按正常标准评分后扣字数分，400字以下在20分以下评分，不再扣字数分等）。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分70分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。'\n",
      "[INFO] [04-10 19:37:05] dataset_utils.py:377 [t:139889838559488]: prompt template detected, start to check template variables\n",
      "[INFO] [04-10 19:37:05] openapi_requestor.py:336 [t:139888728774400]: requesting llm api endpoint: /chat/ernie_speed\n",
      "[INFO] [04-10 19:37:16] base.py:92 [t:139888728774400]: All tasks finished, exeutor will be shutdown\n",
      "[INFO] [04-10 19:37:16] prompt.py:609 [t:139889838559488]: Feedback input: '我正在编写prompt\\n\\n**我现在的prompt是**：\\n\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n1. **内容与主题**（满分20分）：\\n   - 评估作文是否紧扣题目要求，中心是否突出，内容是否充实、健康，并真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定（一等：16-20分，二等：11-15分，三等：6-10分，四等：0-5分）。\\n\\n2. **表达与语言**（满分20分）：\\n   - 评估作文的结构是否严谨，语言是否流畅、准确，字迹是否工整。\\n   - 注意检查是否有错别字、标点符号错误等，并进行相应扣分（每个错别字扣1分，重复不计，扣完5分为止；标点符号错误酌情扣分）。\\n   - 根据表达的质量、语言的准确性和文采，给出相应的分数和等级评定。\\n\\n3. **发展与创新**（满分20分）：\\n   - 评估作文是否展现出深刻的见解、丰富的例证、独特的创意和文采。\\n   - 根据作文在思想深度、例证丰富性、创意和文采方面的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分，每少50字扣1分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分（如400字以上按正常标准评分后扣字数分，400字以下在20分以下评分，不再扣字数分等）。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分70分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。\\n\\n**我尝试的输入**：\\n{\\n    \"question\": \"你注意到了吗？装鲜牛奶的容器一般是方盒子，装矿泉水的容器一般是圆瓶子，装酒圆瓶子又一般放在方盒子里，方圆之间，各得其妙，古诗云：方圆虽异器，功用信具呈。人生也是如此，所谓：上善若水任方圆。以方圆为话题，根据此材料，题目自拟写作文，字数不少于800字。\",\\n    \"article\": \"\\\\n方圆之间的人生智慧\\\\n\\\\n“方有止，圆有旋。”这句古人的智慧结晶，揭示了方与圆两种形态背后的深刻内涵。在生活中，我们常常见到方形的容器装着鲜牛奶，圆形的瓶子则装着矿泉水，而圆形的酒瓶又常常被放置在方形的盒子里。这些看似简单的形状，实际上蕴含着人生的哲理。\\\\n\\\\n方，代表着规矩、原则和稳定。它象征着秩序和安定，是我们生活中不可或缺的一部分。在人的成长过程中，我们需要遵循各种规矩，学会遵守社会的秩序，这样才能在社会中立足。正如牛奶需要方形的容器来保持稳定一样，我们的人生也需要方正的品格来支撑。\\\\n\\\\n然而，人生并非只有方的一面。圆，代表着变通、灵活和包容。它象征着和谐与圆满，是我们在面对复杂世界时的有力武器。我们需要学会圆滑处事，善于变通，这样才能在人生的道路上走得更远。就像矿泉水需要圆形的瓶子来适应各种环境一样，我们的人生也需要圆润的智慧来应对各种挑战。\\\\n\\\\n方圆之间，各得其妙。在人生的道路上，我们需要既要方正又要圆润。我们要有坚定的原则和信念，同时也要学会适应环境，灵活应对。这样才能在人生的舞台上大放异彩。\\\\n\\\\n上善若水任方圆。水，是世界上最柔软的物质，却能穿透坚硬的石头。这就是因为水懂得方圆之间的智慧。它既可以是方形的湖泊，也可以是圆形的河流，还可以是无形的雾气。水无常形，但却能包容万物。同样，我们也要有水的智慧，懂得在方圆之间寻找平衡，这样才能在人生的道路上游刃有余。\\\\n\\\\n总之，方圆之间的人生智慧是我们每个人都需要学习和领悟的。我们要学会在坚持原则和灵活变通之间找到平衡，这样才能在人生的道路上不断前行。同时，我们也要像水一样包容万物，接纳不同的观点和文化，让自己的人生更加丰富多彩。\\\\n\\\\n在这个充满变化和挑战的世界里，我们需要不断学习和成长，不断提升自己的能力和素质。只有这样，我们才能在方圆之间的人生舞台上展现出自己的风采和智慧。让我们一起努力，成为拥有方圆智慧的人，为自己的人生添彩！\\\\n    \"\\n}\\n\\n**我期望得到的输出**：\\n{\"详细解析\": {\\n        \"内容项\": {\\n            \"解析\": \"论文紧扣主题，围绕“方圆”展开了人生哲理的论述。文章结构清晰，中心明确，内容较为充实，思想健康，感情真实。但内容有些单薄，对于方圆之间的哲理和例证分析不够深入。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"14分\"\\n        },\\n        \"表达项\": {\\n            \"解析\": \"文章整体结构完整，条理性较好，语言通顺，未发现字迹不清的问题。然而，文章在表达上缺乏语言的多样性和文采，表述有些平淡。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"13分\"\\n        },\\n        \"发展等级\": {\\n            \"解析\": \"文章较为成功地运用了材料中的“方圆”概念，体现出一定的创意。但整体深度和文采不足，缺少引人深思的论点和生动的例证，内容的深刻性和丰富性有待提升。\",\\n            \"等级\": \"三等\",\\n            \"得分\": \"9分\"\\n        },\\n        \"扣分项和残篇评定\": {\\n            \"解析\": \"文章结构完整，字数达标，没有字数扣分。文中未发现错别字和严重的标点符号错误，无需扣分。\",\\n            \"扣分\": \"0分\"\\n        }\\n    },\\n    \"缺点和改进意见\": {\\n        \"缺点\": \"文章在内容上对于“方圆”哲理的讨论较为表面，缺少深入挖掘和具体生动的例子支撑。在表达上，文章语言欠缺变化和文采，没有达到令人印象深刻的效果。\",\\n        \"改进意见\": \"应在内容上加入更多、更深入的分析和论证，例如，具体场景中方与圆的应用和相辅相成的关系。语言上尝试使用更加生动多样的修辞手法以增强文采，使文章更加引人入胜。\"\\n    },\\n    \"最终得分\": \"36分\"\\n    }\\n\\n**模型的输出是**：\\n**批改指导反馈**：\\n\\n**一、内容与主题**：\\n\\n* 评估：该作文紧扣题目要求，以“方圆之间的人生智慧”为主题，中心突出，内容充实。通过对比装牛奶、矿泉水的容器，引出方圆所代表的人生哲理，结构清晰，逻辑性强。\\n* 分数与等级：20分（一等）\\n\\n**二、表达与语言**：\\n\\n* 评估：作文结构严谨，语言流畅，字迹工整。全文没有出现错别字和标点符号错误。在阐述方圆之间的人生智慧时，使用了形象的比喻和具体的例子，表达清晰且具有一定的文采。\\n* 分数与等级：20分\\n\\n**三、发展与创新**：\\n\\n* 评估：作文在思想深度、例证丰富性、创意和文采方面表现良好。作者通过引用古诗和结合生活实例，深入浅出地阐述了方圆之间的人生智慧，展示了深刻的见解。\\n* 分数与等级：20分（考虑到该方面要求在高考作文中更注重深度与创新性，可适当增加得分至满分）\\n\\n**四、其他评定**：\\n\\n* 评估：作文字数达到了要求（超过800字），完整性良好，无残缺或未完成部分。\\n* 评分：无需扣分\\n\\n**最终评分**：60分（满分70分）\\n\\n**批改建议**：\\n\\n1. 该作文整体表现良好，内容丰富，表达清晰，具有深度和创新性。\\n2. 在今后的写作中，可以继续发挥优势，进一步拓展例证，增加更多的生活实例或社会现象来支持观点，使作文更加生动和具有说服力。\\n3. 可以进一步加强语言的精炼和文采，提高表达的艺术性，使作文更加优美动人。\\n\\n总之，该作文展示了作者对方圆之间人生智慧的深刻理解，是一篇质量较高的作文。\\n\\n===\\n\\n根据我期望得到的输出和模型的输出，告诉我几个理由为什么这个 prompt 并不能很好的完成这个任务'\n",
      "[INFO] [04-10 19:37:16] openapi_requestor.py:336 [t:139889838559488]: requesting llm api endpoint: /chat/completions_pro\n",
      "[INFO] [04-10 19:37:51] prompt.py:621 [t:139889838559488]: Feedback output: '这个prompt不能很好地完成任务的主要原因有以下几点：\\n\\n1. **评分标准的主观性**：作文的批改和评分很大程度上依赖于批改者的主观判断。即使提供了详细的批改指导，不同的人在理解和执行这些指导时仍可能存在差异。因此，模型输出的评分和详细解析可能与您期望的输出有所不同。\\n2. **对深层语义的理解不足**：虽然模型能够捕捉到作文的基本内容和结构，但在理解深层语义、情感色彩和隐含意义方面仍存在挑战。例如，模型可能难以准确判断作文在思想深度、例证丰富性、创意和文采方面的具体表现，从而导致评分偏差。\\n3. **缺乏对人类批改过程的模拟**：真实的作文批改过程涉及到对多个因素的综合考虑，如内容的连贯性、表达的准确性、逻辑的严谨性等。而模型在模拟这一复杂过程时可能过于机械地遵循给定的指导，忽略了某些难以量化的因素。\\n4. **对特定要求的响应不足**：根据您提供的指导，作文需要在内容、表达和发展创新等方面进行具体的评分和解析。然而，模型在处理这些特定要求时可能没有完全达到预期的效果，例如在对内容深度的评估或对语言文采的判断上。\\n\\n为了改进这个任务，可以尝试以下方法：\\n\\n* 提供更具体的评分标准，减少主观性的影响。\\n* 增强模型对深层语义的理解能力，通过更复杂的模型和更大规模的数据集来实现。\\n* 模拟人类批改过程，引入更多的灵活性和综合性考虑。\\n* 针对特定要求进行专门的优化和训练，以提高模型在这些方面的表现。'\n",
      "[INFO] [04-10 19:37:51] prompt.py:634 [t:139889838559488]: Update input: '我正在编写prompt\\n\\n**我现在的prompt是**：\\n\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n1. **内容与主题**（满分20分）：\\n   - 评估作文是否紧扣题目要求，中心是否突出，内容是否充实、健康，并真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定（一等：16-20分，二等：11-15分，三等：6-10分，四等：0-5分）。\\n\\n2. **表达与语言**（满分20分）：\\n   - 评估作文的结构是否严谨，语言是否流畅、准确，字迹是否工整。\\n   - 注意检查是否有错别字、标点符号错误等，并进行相应扣分（每个错别字扣1分，重复不计，扣完5分为止；标点符号错误酌情扣分）。\\n   - 根据表达的质量、语言的准确性和文采，给出相应的分数和等级评定。\\n\\n3. **发展与创新**（满分20分）：\\n   - 评估作文是否展现出深刻的见解、丰富的例证、独特的创意和文采。\\n   - 根据作文在思想深度、例证丰富性、创意和文采方面的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分，每少50字扣1分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分（如400字以上按正常标准评分后扣字数分，400字以下在20分以下评分，不再扣字数分等）。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分70分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。\\n\\n**我尝试的输入**：\\n{\\n    \"question\": \"你注意到了吗？装鲜牛奶的容器一般是方盒子，装矿泉水的容器一般是圆瓶子，装酒圆瓶子又一般放在方盒子里，方圆之间，各得其妙，古诗云：方圆虽异器，功用信具呈。人生也是如此，所谓：上善若水任方圆。以方圆为话题，根据此材料，题目自拟写作文，字数不少于800字。\",\\n    \"article\": \"\\\\n方圆之间的人生智慧\\\\n\\\\n“方有止，圆有旋。”这句古人的智慧结晶，揭示了方与圆两种形态背后的深刻内涵。在生活中，我们常常见到方形的容器装着鲜牛奶，圆形的瓶子则装着矿泉水，而圆形的酒瓶又常常被放置在方形的盒子里。这些看似简单的形状，实际上蕴含着人生的哲理。\\\\n\\\\n方，代表着规矩、原则和稳定。它象征着秩序和安定，是我们生活中不可或缺的一部分。在人的成长过程中，我们需要遵循各种规矩，学会遵守社会的秩序，这样才能在社会中立足。正如牛奶需要方形的容器来保持稳定一样，我们的人生也需要方正的品格来支撑。\\\\n\\\\n然而，人生并非只有方的一面。圆，代表着变通、灵活和包容。它象征着和谐与圆满，是我们在面对复杂世界时的有力武器。我们需要学会圆滑处事，善于变通，这样才能在人生的道路上走得更远。就像矿泉水需要圆形的瓶子来适应各种环境一样，我们的人生也需要圆润的智慧来应对各种挑战。\\\\n\\\\n方圆之间，各得其妙。在人生的道路上，我们需要既要方正又要圆润。我们要有坚定的原则和信念，同时也要学会适应环境，灵活应对。这样才能在人生的舞台上大放异彩。\\\\n\\\\n上善若水任方圆。水，是世界上最柔软的物质，却能穿透坚硬的石头。这就是因为水懂得方圆之间的智慧。它既可以是方形的湖泊，也可以是圆形的河流，还可以是无形的雾气。水无常形，但却能包容万物。同样，我们也要有水的智慧，懂得在方圆之间寻找平衡，这样才能在人生的道路上游刃有余。\\\\n\\\\n总之，方圆之间的人生智慧是我们每个人都需要学习和领悟的。我们要学会在坚持原则和灵活变通之间找到平衡，这样才能在人生的道路上不断前行。同时，我们也要像水一样包容万物，接纳不同的观点和文化，让自己的人生更加丰富多彩。\\\\n\\\\n在这个充满变化和挑战的世界里，我们需要不断学习和成长，不断提升自己的能力和素质。只有这样，我们才能在方圆之间的人生舞台上展现出自己的风采和智慧。让我们一起努力，成为拥有方圆智慧的人，为自己的人生添彩！\\\\n    \"\\n}\\n\\n**我期望得到的输出**：\\n{\"详细解析\": {\\n        \"内容项\": {\\n            \"解析\": \"论文紧扣主题，围绕“方圆”展开了人生哲理的论述。文章结构清晰，中心明确，内容较为充实，思想健康，感情真实。但内容有些单薄，对于方圆之间的哲理和例证分析不够深入。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"14分\"\\n        },\\n        \"表达项\": {\\n            \"解析\": \"文章整体结构完整，条理性较好，语言通顺，未发现字迹不清的问题。然而，文章在表达上缺乏语言的多样性和文采，表述有些平淡。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"13分\"\\n        },\\n        \"发展等级\": {\\n            \"解析\": \"文章较为成功地运用了材料中的“方圆”概念，体现出一定的创意。但整体深度和文采不足，缺少引人深思的论点和生动的例证，内容的深刻性和丰富性有待提升。\",\\n            \"等级\": \"三等\",\\n            \"得分\": \"9分\"\\n        },\\n        \"扣分项和残篇评定\": {\\n            \"解析\": \"文章结构完整，字数达标，没有字数扣分。文中未发现错别字和严重的标点符号错误，无需扣分。\",\\n            \"扣分\": \"0分\"\\n        }\\n    },\\n    \"缺点和改进意见\": {\\n        \"缺点\": \"文章在内容上对于“方圆”哲理的讨论较为表面，缺少深入挖掘和具体生动的例子支撑。在表达上，文章语言欠缺变化和文采，没有达到令人印象深刻的效果。\",\\n        \"改进意见\": \"应在内容上加入更多、更深入的分析和论证，例如，具体场景中方与圆的应用和相辅相成的关系。语言上尝试使用更加生动多样的修辞手法以增强文采，使文章更加引人入胜。\"\\n    },\\n    \"最终得分\": \"36分\"\\n    }\\n\\n**模型的输出是**：\\n**批改指导反馈**：\\n\\n**一、内容与主题**：\\n\\n* 评估：该作文紧扣题目要求，以“方圆之间的人生智慧”为主题，中心突出，内容充实。通过对比装牛奶、矿泉水的容器，引出方圆所代表的人生哲理，结构清晰，逻辑性强。\\n* 分数与等级：20分（一等）\\n\\n**二、表达与语言**：\\n\\n* 评估：作文结构严谨，语言流畅，字迹工整。全文没有出现错别字和标点符号错误。在阐述方圆之间的人生智慧时，使用了形象的比喻和具体的例子，表达清晰且具有一定的文采。\\n* 分数与等级：20分\\n\\n**三、发展与创新**：\\n\\n* 评估：作文在思想深度、例证丰富性、创意和文采方面表现良好。作者通过引用古诗和结合生活实例，深入浅出地阐述了方圆之间的人生智慧，展示了深刻的见解。\\n* 分数与等级：20分（考虑到该方面要求在高考作文中更注重深度与创新性，可适当增加得分至满分）\\n\\n**四、其他评定**：\\n\\n* 评估：作文字数达到了要求（超过800字），完整性良好，无残缺或未完成部分。\\n* 评分：无需扣分\\n\\n**最终评分**：60分（满分70分）\\n\\n**批改建议**：\\n\\n1. 该作文整体表现良好，内容丰富，表达清晰，具有深度和创新性。\\n2. 在今后的写作中，可以继续发挥优势，进一步拓展例证，增加更多的生活实例或社会现象来支持观点，使作文更加生动和具有说服力。\\n3. 可以进一步加强语言的精炼和文采，提高表达的艺术性，使作文更加优美动人。\\n\\n总之，该作文展示了作者对方圆之间人生智慧的深刻理解，是一篇质量较高的作文。\\n\\n**但是存在这些问题**：\\n这个prompt不能很好地完成任务的主要原因有以下几点：\\n\\n1. **评分标准的主观性**：作文的批改和评分很大程度上依赖于批改者的主观判断。即使提供了详细的批改指导，不同的人在理解和执行这些指导时仍可能存在差异。因此，模型输出的评分和详细解析可能与您期望的输出有所不同。\\n2. **对深层语义的理解不足**：虽然模型能够捕捉到作文的基本内容和结构，但在理解深层语义、情感色彩和隐含意义方面仍存在挑战。例如，模型可能难以准确判断作文在思想深度、例证丰富性、创意和文采方面的具体表现，从而导致评分偏差。\\n3. **缺乏对人类批改过程的模拟**：真实的作文批改过程涉及到对多个因素的综合考虑，如内容的连贯性、表达的准确性、逻辑的严谨性等。而模型在模拟这一复杂过程时可能过于机械地遵循给定的指导，忽略了某些难以量化的因素。\\n4. **对特定要求的响应不足**：根据您提供的指导，作文需要在内容、表达和发展创新等方面进行具体的评分和解析。然而，模型在处理这些特定要求时可能没有完全达到预期的效果，例如在对内容深度的评估或对语言文采的判断上。\\n\\n为了改进这个任务，可以尝试以下方法：\\n\\n* 提供更具体的评分标准，减少主观性的影响。\\n* 增强模型对深层语义的理解能力，通过更复杂的模型和更大规模的数据集来实现。\\n* 模拟人类批改过程，引入更多的灵活性和综合性考虑。\\n* 针对特定要求进行专门的优化和训练，以提高模型在这些方面的表现。\\n\\n===\\n\\n基于以上问题和期望的输出，为我编写一个新的 prompt，涉及的变量用 {question} {article} 表示，整个prompt由<START>和<END>包裹：\\n'\n",
      "[INFO] [04-10 19:37:51] openapi_requestor.py:336 [t:139889838559488]: requesting llm api endpoint: /chat/completions_pro\n",
      "[INFO] [04-10 19:38:37] prompt.py:647 [t:139889838559488]: Update output: '<START>\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\\n\\n1. **主题与内容**（满分20分）：\\n   - 评估作文是否紧扣题目，中心是否突出。\\n   - 内容是否充实、健康，是否真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\\n\\n2. **结构与表达**（满分20分）：\\n   - 评估作文的结构是否清晰，段落安排是否合理。\\n   - 语言是否流畅、准确，有无错别字和标点符号错误。\\n   - 注意检查字迹是否工整，卷面是否整洁。\\n   - 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\\n\\n3. **逻辑与思辨**（满分20分）：\\n   - 评估作文的逻辑是否严密，思路是否清晰。\\n   - 是否有深刻的见解和独特的创意。\\n   - 能否引发读者思考，产生共鸣。\\n   - 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分60分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。\\n<END>\\n\\n**注意**：\\n为了更准确地评估作文，请在批改时保持客观公正的态度，并尽可能提供具体的例子和证据来支持您的评分和建议。同时，请注意尊重作者的原创性，避免对作文内容进行不必要的修改或删减。'\n",
      "[INFO] [04-10 19:38:37] prompt.py:656 [t:139889838559488]: New prompt: '\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\\n\\n1. **主题与内容**（满分20分）：\\n   - 评估作文是否紧扣题目，中心是否突出。\\n   - 内容是否充实、健康，是否真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\\n\\n2. **结构与表达**（满分20分）：\\n   - 评估作文的结构是否清晰，段落安排是否合理。\\n   - 语言是否流畅、准确，有无错别字和标点符号错误。\\n   - 注意检查字迹是否工整，卷面是否整洁。\\n   - 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\\n\\n3. **逻辑与思辨**（满分20分）：\\n   - 评估作文的逻辑是否严密，思路是否清晰。\\n   - 是否有深刻的见解和独特的创意。\\n   - 能否引发读者思考，产生共鸣。\\n   - 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分60分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。\\n'\n",
      "[INFO] [04-10 19:38:37] dataset_utils.py:377 [t:139889838559488]: prompt template detected, start to check template variables\n",
      "[INFO] [04-10 19:38:37] openapi_requestor.py:336 [t:139888728774400]: requesting llm api endpoint: /chat/ernie_speed\n",
      "[INFO] [04-10 19:38:47] base.py:92 [t:139888728774400]: All tasks finished, exeutor will be shutdown\n",
      "[INFO] [04-10 19:38:47] prompt.py:609 [t:139889838559488]: Feedback input: '我正在编写prompt\\n\\n**我现在的prompt是**：\\n\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\\n\\n1. **主题与内容**（满分20分）：\\n   - 评估作文是否紧扣题目，中心是否突出。\\n   - 内容是否充实、健康，是否真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\\n\\n2. **结构与表达**（满分20分）：\\n   - 评估作文的结构是否清晰，段落安排是否合理。\\n   - 语言是否流畅、准确，有无错别字和标点符号错误。\\n   - 注意检查字迹是否工整，卷面是否整洁。\\n   - 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\\n\\n3. **逻辑与思辨**（满分20分）：\\n   - 评估作文的逻辑是否严密，思路是否清晰。\\n   - 是否有深刻的见解和独特的创意。\\n   - 能否引发读者思考，产生共鸣。\\n   - 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分60分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。\\n\\n\\n**我尝试的输入**：\\n{\\n    \"question\": \"你注意到了吗？装鲜牛奶的容器一般是方盒子，装矿泉水的容器一般是圆瓶子，装酒圆瓶子又一般放在方盒子里，方圆之间，各得其妙，古诗云：方圆虽异器，功用信具呈。人生也是如此，所谓：上善若水任方圆。以方圆为话题，根据此材料，题目自拟写作文，字数不少于800字。\",\\n    \"article\": \"\\\\n方圆之间的人生智慧\\\\n\\\\n“方有止，圆有旋。”这句古人的智慧结晶，揭示了方与圆两种形态背后的深刻内涵。在生活中，我们常常见到方形的容器装着鲜牛奶，圆形的瓶子则装着矿泉水，而圆形的酒瓶又常常被放置在方形的盒子里。这些看似简单的形状，实际上蕴含着人生的哲理。\\\\n\\\\n方，代表着规矩、原则和稳定。它象征着秩序和安定，是我们生活中不可或缺的一部分。在人的成长过程中，我们需要遵循各种规矩，学会遵守社会的秩序，这样才能在社会中立足。正如牛奶需要方形的容器来保持稳定一样，我们的人生也需要方正的品格来支撑。\\\\n\\\\n然而，人生并非只有方的一面。圆，代表着变通、灵活和包容。它象征着和谐与圆满，是我们在面对复杂世界时的有力武器。我们需要学会圆滑处事，善于变通，这样才能在人生的道路上走得更远。就像矿泉水需要圆形的瓶子来适应各种环境一样，我们的人生也需要圆润的智慧来应对各种挑战。\\\\n\\\\n方圆之间，各得其妙。在人生的道路上，我们需要既要方正又要圆润。我们要有坚定的原则和信念，同时也要学会适应环境，灵活应对。这样才能在人生的舞台上大放异彩。\\\\n\\\\n上善若水任方圆。水，是世界上最柔软的物质，却能穿透坚硬的石头。这就是因为水懂得方圆之间的智慧。它既可以是方形的湖泊，也可以是圆形的河流，还可以是无形的雾气。水无常形，但却能包容万物。同样，我们也要有水的智慧，懂得在方圆之间寻找平衡，这样才能在人生的道路上游刃有余。\\\\n\\\\n总之，方圆之间的人生智慧是我们每个人都需要学习和领悟的。我们要学会在坚持原则和灵活变通之间找到平衡，这样才能在人生的道路上不断前行。同时，我们也要像水一样包容万物，接纳不同的观点和文化，让自己的人生更加丰富多彩。\\\\n\\\\n在这个充满变化和挑战的世界里，我们需要不断学习和成长，不断提升自己的能力和素质。只有这样，我们才能在方圆之间的人生舞台上展现出自己的风采和智慧。让我们一起努力，成为拥有方圆智慧的人，为自己的人生添彩！\\\\n    \"\\n}\\n\\n**我期望得到的输出**：\\n{\"详细解析\": {\\n        \"内容项\": {\\n            \"解析\": \"论文紧扣主题，围绕“方圆”展开了人生哲理的论述。文章结构清晰，中心明确，内容较为充实，思想健康，感情真实。但内容有些单薄，对于方圆之间的哲理和例证分析不够深入。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"14分\"\\n        },\\n        \"表达项\": {\\n            \"解析\": \"文章整体结构完整，条理性较好，语言通顺，未发现字迹不清的问题。然而，文章在表达上缺乏语言的多样性和文采，表述有些平淡。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"13分\"\\n        },\\n        \"发展等级\": {\\n            \"解析\": \"文章较为成功地运用了材料中的“方圆”概念，体现出一定的创意。但整体深度和文采不足，缺少引人深思的论点和生动的例证，内容的深刻性和丰富性有待提升。\",\\n            \"等级\": \"三等\",\\n            \"得分\": \"9分\"\\n        },\\n        \"扣分项和残篇评定\": {\\n            \"解析\": \"文章结构完整，字数达标，没有字数扣分。文中未发现错别字和严重的标点符号错误，无需扣分。\",\\n            \"扣分\": \"0分\"\\n        }\\n    },\\n    \"缺点和改进意见\": {\\n        \"缺点\": \"文章在内容上对于“方圆”哲理的讨论较为表面，缺少深入挖掘和具体生动的例子支撑。在表达上，文章语言欠缺变化和文采，没有达到令人印象深刻的效果。\",\\n        \"改进意见\": \"应在内容上加入更多、更深入的分析和论证，例如，具体场景中方与圆的应用和相辅相成的关系。语言上尝试使用更加生动多样的修辞手法以增强文采，使文章更加引人入胜。\"\\n    },\\n    \"最终得分\": \"36分\"\\n    }\\n\\n**模型的输出是**：\\n**批改指导及评分建议**：\\n\\n**一、主题与内容（满分20分）：**\\n\\n* 紧扣题目，以方圆为话题展开讨论人生智慧，中心突出。\\n* 内容充实，从方圆两个角度阐述了人生的智慧，表达了对人生的深刻理解。\\n* 给出具体的例子来解释方圆的含义，加深了读者对文章内容的理解。\\n\\n**评分建议**：18分（满分20分）\\n\\n**二、结构与表达（满分20分）：**\\n\\n* 结构清晰，段落安排合理，逻辑连贯。\\n* 语言流畅，用词准确，未见明显的错别字和标点符号错误。\\n* 字迹工整，卷面整洁。\\n\\n**评分建议**：19分（满分20分）\\n\\n**三、逻辑与思辨（满分20分）：**\\n\\n* 文章逻辑严密，从方圆两种形态入手，逐渐展开对人生智慧的讨论。\\n* 见解深刻，通过具体的例子和论证阐述了方圆在人生中的重要性。\\n* 引起读者思考，让人对人生有了更深入的认识。\\n\\n**评分建议**：18分（满分20分）\\n\\n**四、其他评定：**\\n\\n* 作文字数达标，内容完整。\\n* 无明显的残篇或未完成情况。\\n\\n**最终评分**：总成绩为 6分。（总分以三项分数的加权平均来计算） 建议作者继续保持文章的连贯性和深度思考的优势，可以进一步在词汇的运用和段落安排的层次上做出进一步的努力和优化。并且在结构清晰的基础上寻找语言特色上的创新点和提升点，以提高作文的吸引力。总体来说，这篇作文表现出良好的思考能力和深度，值得鼓励。\\n\\n===\\n\\n根据我期望得到的输出和模型的输出，告诉我几个理由为什么这个 prompt 并不能很好的完成这个任务'\n",
      "[INFO] [04-10 19:38:47] openapi_requestor.py:336 [t:139889838559488]: requesting llm api endpoint: /chat/completions_pro\n",
      "[INFO] [04-10 19:39:31] prompt.py:621 [t:139889838559488]: Feedback output: '这个prompt不能很好地完成任务的原因有几个：\\n\\n1. **评分标准的差异**：在prompt中，提供了详细的批改指导和评分标准，包括主题与内容、结构与表达、逻辑与思辨等方面的要求。然而，在模型的输出中，评分标准的应用似乎与指导不完全一致。例如，模型输出中的“最终评分”计算方式不明确，与prompt中的要求不符，导致评分结果无法准确反映作文的实际水平。\\n2. **内容解析的不足**：虽然模型在输出中对作文的主题、结构、逻辑等方面进行了简要的解析，但这些解析相对较为笼统，没有深入到具体的内容细节中去。例如，对于作文中方圆哲理的讨论、例证的分析等方面，模型并没有给出足够详细的评价和建议，这与prompt中要求的“详细的批改”不符。\\n3. **改进意见的缺乏**：在prompt中，明确要求给出具体的改进意见和提升方向。然而，在模型的输出中，虽然提到了一些作文的优点和不足，但并没有给出具体、可操作的改进建议。这使得作文的作者在看到批改结果后，可能无法明确知道如何在今后的写作中进行改进。\\n4. **语言运用的不足**：模型在输出中使用了一些较为笼统、模糊的语言，例如“良好的思考能力”、“深度思考的优势”等，这些表述并没有具体说明作文在哪些方面表现出了这些优点，因此可能无法让作者明确理解评价的含义。此外，模型在输出中的一些表述也存在一定的语义重复和冗余，例如“可以进一步在词汇的运用和段落安排的层次上做出进一步的努力和优化”，这种表述方式可能会影响批改结果的清晰度和准确性。\\n\\n综上所述，这个prompt不能很好地完成任务的原因主要在于评分标准的差异、内容解析的不足、改进意见的缺乏以及语言运用的不足等方面。为了提高任务完成的效果，可以考虑对模型进行优化和改进，使其能够更好地理解和应用评分标准，提供更详细、具体的内容解析和改进建议，以及使用更清晰、准确的语言进行表述。'\n",
      "[INFO] [04-10 19:39:31] prompt.py:634 [t:139889838559488]: Update input: '我正在编写prompt\\n\\n**我现在的prompt是**：\\n\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\\n\\n1. **主题与内容**（满分20分）：\\n   - 评估作文是否紧扣题目，中心是否突出。\\n   - 内容是否充实、健康，是否真实表达感情。\\n   - 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\\n\\n2. **结构与表达**（满分20分）：\\n   - 评估作文的结构是否清晰，段落安排是否合理。\\n   - 语言是否流畅、准确，有无错别字和标点符号错误。\\n   - 注意检查字迹是否工整，卷面是否整洁。\\n   - 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\\n\\n3. **逻辑与思辨**（满分20分）：\\n   - 评估作文的逻辑是否严密，思路是否清晰。\\n   - 是否有深刻的见解和独特的创意。\\n   - 能否引发读者思考，产生共鸣。\\n   - 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\\n\\n4. **其他评定**：\\n   - 检查作文字数是否达标（少于800字酌情扣分）。\\n   - 评估作文的完整性，对于残篇或未完成的作文，按照相应标准评分。\\n\\n**最终评分**：将以上各项得分相加，得出最终评分（满分60分）。\\n\\n**批改建议**：\\n   - 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n   - 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n\\n请根据上述指导，对作文进行详细的批改，并给出最终评分和批改建议。\\n\\n\\n**我尝试的输入**：\\n{\\n    \"question\": \"你注意到了吗？装鲜牛奶的容器一般是方盒子，装矿泉水的容器一般是圆瓶子，装酒圆瓶子又一般放在方盒子里，方圆之间，各得其妙，古诗云：方圆虽异器，功用信具呈。人生也是如此，所谓：上善若水任方圆。以方圆为话题，根据此材料，题目自拟写作文，字数不少于800字。\",\\n    \"article\": \"\\\\n方圆之间的人生智慧\\\\n\\\\n“方有止，圆有旋。”这句古人的智慧结晶，揭示了方与圆两种形态背后的深刻内涵。在生活中，我们常常见到方形的容器装着鲜牛奶，圆形的瓶子则装着矿泉水，而圆形的酒瓶又常常被放置在方形的盒子里。这些看似简单的形状，实际上蕴含着人生的哲理。\\\\n\\\\n方，代表着规矩、原则和稳定。它象征着秩序和安定，是我们生活中不可或缺的一部分。在人的成长过程中，我们需要遵循各种规矩，学会遵守社会的秩序，这样才能在社会中立足。正如牛奶需要方形的容器来保持稳定一样，我们的人生也需要方正的品格来支撑。\\\\n\\\\n然而，人生并非只有方的一面。圆，代表着变通、灵活和包容。它象征着和谐与圆满，是我们在面对复杂世界时的有力武器。我们需要学会圆滑处事，善于变通，这样才能在人生的道路上走得更远。就像矿泉水需要圆形的瓶子来适应各种环境一样，我们的人生也需要圆润的智慧来应对各种挑战。\\\\n\\\\n方圆之间，各得其妙。在人生的道路上，我们需要既要方正又要圆润。我们要有坚定的原则和信念，同时也要学会适应环境，灵活应对。这样才能在人生的舞台上大放异彩。\\\\n\\\\n上善若水任方圆。水，是世界上最柔软的物质，却能穿透坚硬的石头。这就是因为水懂得方圆之间的智慧。它既可以是方形的湖泊，也可以是圆形的河流，还可以是无形的雾气。水无常形，但却能包容万物。同样，我们也要有水的智慧，懂得在方圆之间寻找平衡，这样才能在人生的道路上游刃有余。\\\\n\\\\n总之，方圆之间的人生智慧是我们每个人都需要学习和领悟的。我们要学会在坚持原则和灵活变通之间找到平衡，这样才能在人生的道路上不断前行。同时，我们也要像水一样包容万物，接纳不同的观点和文化，让自己的人生更加丰富多彩。\\\\n\\\\n在这个充满变化和挑战的世界里，我们需要不断学习和成长，不断提升自己的能力和素质。只有这样，我们才能在方圆之间的人生舞台上展现出自己的风采和智慧。让我们一起努力，成为拥有方圆智慧的人，为自己的人生添彩！\\\\n    \"\\n}\\n\\n**我期望得到的输出**：\\n{\"详细解析\": {\\n        \"内容项\": {\\n            \"解析\": \"论文紧扣主题，围绕“方圆”展开了人生哲理的论述。文章结构清晰，中心明确，内容较为充实，思想健康，感情真实。但内容有些单薄，对于方圆之间的哲理和例证分析不够深入。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"14分\"\\n        },\\n        \"表达项\": {\\n            \"解析\": \"文章整体结构完整，条理性较好，语言通顺，未发现字迹不清的问题。然而，文章在表达上缺乏语言的多样性和文采，表述有些平淡。\",\\n            \"等级\": \"二等\",\\n            \"得分\": \"13分\"\\n        },\\n        \"发展等级\": {\\n            \"解析\": \"文章较为成功地运用了材料中的“方圆”概念，体现出一定的创意。但整体深度和文采不足，缺少引人深思的论点和生动的例证，内容的深刻性和丰富性有待提升。\",\\n            \"等级\": \"三等\",\\n            \"得分\": \"9分\"\\n        },\\n        \"扣分项和残篇评定\": {\\n            \"解析\": \"文章结构完整，字数达标，没有字数扣分。文中未发现错别字和严重的标点符号错误，无需扣分。\",\\n            \"扣分\": \"0分\"\\n        }\\n    },\\n    \"缺点和改进意见\": {\\n        \"缺点\": \"文章在内容上对于“方圆”哲理的讨论较为表面，缺少深入挖掘和具体生动的例子支撑。在表达上，文章语言欠缺变化和文采，没有达到令人印象深刻的效果。\",\\n        \"改进意见\": \"应在内容上加入更多、更深入的分析和论证，例如，具体场景中方与圆的应用和相辅相成的关系。语言上尝试使用更加生动多样的修辞手法以增强文采，使文章更加引人入胜。\"\\n    },\\n    \"最终得分\": \"36分\"\\n    }\\n\\n**模型的输出是**：\\n**批改指导及评分建议**：\\n\\n**一、主题与内容（满分20分）：**\\n\\n* 紧扣题目，以方圆为话题展开讨论人生智慧，中心突出。\\n* 内容充实，从方圆两个角度阐述了人生的智慧，表达了对人生的深刻理解。\\n* 给出具体的例子来解释方圆的含义，加深了读者对文章内容的理解。\\n\\n**评分建议**：18分（满分20分）\\n\\n**二、结构与表达（满分20分）：**\\n\\n* 结构清晰，段落安排合理，逻辑连贯。\\n* 语言流畅，用词准确，未见明显的错别字和标点符号错误。\\n* 字迹工整，卷面整洁。\\n\\n**评分建议**：19分（满分20分）\\n\\n**三、逻辑与思辨（满分20分）：**\\n\\n* 文章逻辑严密，从方圆两种形态入手，逐渐展开对人生智慧的讨论。\\n* 见解深刻，通过具体的例子和论证阐述了方圆在人生中的重要性。\\n* 引起读者思考，让人对人生有了更深入的认识。\\n\\n**评分建议**：18分（满分20分）\\n\\n**四、其他评定：**\\n\\n* 作文字数达标，内容完整。\\n* 无明显的残篇或未完成情况。\\n\\n**最终评分**：总成绩为 6分。（总分以三项分数的加权平均来计算） 建议作者继续保持文章的连贯性和深度思考的优势，可以进一步在词汇的运用和段落安排的层次上做出进一步的努力和优化。并且在结构清晰的基础上寻找语言特色上的创新点和提升点，以提高作文的吸引力。总体来说，这篇作文表现出良好的思考能力和深度，值得鼓励。\\n\\n**但是存在这些问题**：\\n这个prompt不能很好地完成任务的原因有几个：\\n\\n1. **评分标准的差异**：在prompt中，提供了详细的批改指导和评分标准，包括主题与内容、结构与表达、逻辑与思辨等方面的要求。然而，在模型的输出中，评分标准的应用似乎与指导不完全一致。例如，模型输出中的“最终评分”计算方式不明确，与prompt中的要求不符，导致评分结果无法准确反映作文的实际水平。\\n2. **内容解析的不足**：虽然模型在输出中对作文的主题、结构、逻辑等方面进行了简要的解析，但这些解析相对较为笼统，没有深入到具体的内容细节中去。例如，对于作文中方圆哲理的讨论、例证的分析等方面，模型并没有给出足够详细的评价和建议，这与prompt中要求的“详细的批改”不符。\\n3. **改进意见的缺乏**：在prompt中，明确要求给出具体的改进意见和提升方向。然而，在模型的输出中，虽然提到了一些作文的优点和不足，但并没有给出具体、可操作的改进建议。这使得作文的作者在看到批改结果后，可能无法明确知道如何在今后的写作中进行改进。\\n4. **语言运用的不足**：模型在输出中使用了一些较为笼统、模糊的语言，例如“良好的思考能力”、“深度思考的优势”等，这些表述并没有具体说明作文在哪些方面表现出了这些优点，因此可能无法让作者明确理解评价的含义。此外，模型在输出中的一些表述也存在一定的语义重复和冗余，例如“可以进一步在词汇的运用和段落安排的层次上做出进一步的努力和优化”，这种表述方式可能会影响批改结果的清晰度和准确性。\\n\\n综上所述，这个prompt不能很好地完成任务的原因主要在于评分标准的差异、内容解析的不足、改进意见的缺乏以及语言运用的不足等方面。为了提高任务完成的效果，可以考虑对模型进行优化和改进，使其能够更好地理解和应用评分标准，提供更详细、具体的内容解析和改进建议，以及使用更清晰、准确的语言进行表述。\\n\\n===\\n\\n基于以上问题和期望的输出，为我编写一个新的 prompt，涉及的变量用 {question} {article} 表示，整个prompt由<START>和<END>包裹：\\n'\n",
      "[INFO] [04-10 19:39:31] openapi_requestor.py:336 [t:139889838559488]: requesting llm api endpoint: /chat/completions_pro\n",
      "[ERROR] [04-10 19:40:31] base.py:342 [t:139889838559488]: request exception: HTTPSConnectionPool(host='aip.baidubce.com', port=443): Read timed out. (read timeout=60), retrying...\n",
      "[INFO] [04-10 19:41:20] prompt.py:647 [t:139889838559488]: Update output: '<START>\\n\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\\n\\n1. **主题与内容**（满分20分）：\\n- 评估作文是否紧扣题目，中心是否突出。\\n- 内容是否充实、健康，是否真实表达感情。\\n- 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\\n\\n2. **结构与表达**（满分20分）：\\n- 评估作文的结构是否清晰，段落安排是否合理。\\n- 语言是否流畅、准确，有无错别字和标点符号错误。\\n- 注意检查字迹是否工整，卷面是否整洁。\\n- 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\\n\\n3. **逻辑与思辨**（满分20分）：\\n- 评估作文的逻辑是否严密，思路是否清晰。\\n- 是否有深刻的见解和独特的创意。\\n- 能否引发读者思考，产生共鸣。\\n- 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\\n\\n**评分细则**：\\n- 根据上述三个方面，分别给出具体的分数（满分60分）。\\n- 综合考虑作文的整体表现，给出一个总体评价等级（优秀、良好、中等、及格、不及格）。\\n\\n**批改建议**：\\n- 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n- 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n- 提供一些相关的写作技巧和素材，帮助作者提高写作水平。\\n\\n**请注意**：在给出批改建议和评分时，请务必保持客观、公正和具体。避免使用模糊、笼统的评价语言，确保作者能够明确理解批改结果和提升方向。\\n\\n<END>'\n",
      "[INFO] [04-10 19:41:20] prompt.py:656 [t:139889838559488]: New prompt: '\\n\\n请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\\n\\n**作文题目**：{question}\\n\\n**作文内容**：{article}\\n\\n**批改指导**：\\n\\n在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\\n\\n1. **主题与内容**（满分20分）：\\n- 评估作文是否紧扣题目，中心是否突出。\\n- 内容是否充实、健康，是否真实表达感情。\\n- 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\\n\\n2. **结构与表达**（满分20分）：\\n- 评估作文的结构是否清晰，段落安排是否合理。\\n- 语言是否流畅、准确，有无错别字和标点符号错误。\\n- 注意检查字迹是否工整，卷面是否整洁。\\n- 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\\n\\n3. **逻辑与思辨**（满分20分）：\\n- 评估作文的逻辑是否严密，思路是否清晰。\\n- 是否有深刻的见解和独特的创意。\\n- 能否引发读者思考，产生共鸣。\\n- 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\\n\\n**评分细则**：\\n- 根据上述三个方面，分别给出具体的分数（满分60分）。\\n- 综合考虑作文的整体表现，给出一个总体评价等级（优秀、良好、中等、及格、不及格）。\\n\\n**批改建议**：\\n- 根据作文的优点和不足，给出具体的改进意见和提升方向。\\n- 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\\n- 提供一些相关的写作技巧和素材，帮助作者提高写作水平。\\n\\n**请注意**：在给出批改建议和评分时，请务必保持客观、公正和具体。避免使用模糊、笼统的评价语言，确保作者能够明确理解批改结果和提升方向。\\n\\n'\n"
     ]
    }
   ],
   "source": [
    "from qianfan.dataset import Dataset\n",
    "\n",
    "dataset = Dataset.load(\n",
    "    data_file=\"./essay.jsonl\",\n",
    "    organize_data_as_group=False, \n",
    "    input_columns=[\"question\", \"article\"], \n",
    "    reference_column=\"expect\"\n",
    ")\n",
    "\n",
    "old_prompt = Prompt(\"\"\"\n",
    "    请帮我批改如下高考作文，给出评价和评分（0-70分）：\n",
    "                高考作文评分批改分为基础等级、发展等级、关于作文的其他项评定\n",
    "1、基础等级\n",
    "基础等级分内容和表达两项。\n",
    "1）内容项\n",
    "具体评分规则如下：符合题意、中心突出、内容充实、思想健康、感情真挚为一等，可按16-20分酌情给分；符合题意、主题明确、内容较充实、思想健康、感情真实为二等，可按11-15分酌情给分；基本符合题意、中心基本明确、内容单薄、思想基本健康、感情基本真实为三等，可按6-10分酌情给分；偏离题意、中心不明确、内容不当、思想不健康、感情虚假为四等，可按0-5分酌情给分。\n",
    "2）表达项\n",
    "具体评分规则如下：符合文体要求、结构严谨、语言流畅、字迹工整为一等，可按16-20分酌情给分；符合文体要求、结构完整、语言通顺、字迹清楚为二等，可按11-15分酌情给分；基本符合文体要求、结构基本完整、语言基本通顺、字迹基本清楚为三等，可按6-10分酌情给分；不符合文体要求、结构混乱、语言不通顺语病多、字迹潦草难辨为四等，可按0-5分酌情给分。\n",
    "2、发展等级\n",
    "基础等级分要与发展等级分相匹配，发展等级分不能跨越基础等级的得分等级。\n",
    "具体评分规则如下：深刻、丰富、有文采、有创意为一等，可按16-20分酌情给分；较深刻、较丰富、较有文采、较有创意为二等，可按11-15分酌情给分；略显深刻、略显丰富、略显文采、略显创意为三等，可按6-10分酌情给分；个别语句有深意、个别例子较好、个别语句较精彩、个别地方有深意为四等，可按0-5分酌情给分。\n",
    "3、关于作文的其他项评定\n",
    "1）扣分项评定\n",
    "出现错别字，1个错别字扣1分，重复不计，扣完5分为止;标点符号出现3处以上错误的酌情扣分;不足字数者，每少50字扣1分;无标题扣2分。\n",
    "2）残篇评定\n",
    "400字以上的文章，按评分标准评分，扣字数分。(少50个字扣1分)\n",
    "400字以下的文章，20分以下评分，不再扣字数分。\n",
    "200字以下的文章，10分以下评分，不再扣字数分。\n",
    "只写一两句话的，给1分或2分，不评0分。\n",
    "只写标题的，给1分或2分，不评0分。\n",
    "完全空白的，评0分。\n",
    "        题目：{question}\n",
    "        作文内容：{article}\"\"\")\n",
    "new_prompt = old_prompt.apo_by_sample(example=dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "请按照以下指导对高考作文进行详细的批改，并给出相应的评分和建议。\n",
      "\n",
      "**作文题目**：{question}\n",
      "\n",
      "**作文内容**：{article}\n",
      "\n",
      "**批改指导**：\n",
      "\n",
      "在批改作文时，请综合考虑以下几个方面，并给出具体的评分和建议：\n",
      "\n",
      "1. **主题与内容**（满分20分）：\n",
      "- 评估作文是否紧扣题目，中心是否突出。\n",
      "- 内容是否充实、健康，是否真实表达感情。\n",
      "- 根据内容的符合度、丰富性和深度，给出相应的分数和等级评定。\n",
      "\n",
      "2. **结构与表达**（满分20分）：\n",
      "- 评估作文的结构是否清晰，段落安排是否合理。\n",
      "- 语言是否流畅、准确，有无错别字和标点符号错误。\n",
      "- 注意检查字迹是否工整，卷面是否整洁。\n",
      "- 根据结构、语言和卷面的质量，给出相应的分数和等级评定。\n",
      "\n",
      "3. **逻辑与思辨**（满分20分）：\n",
      "- 评估作文的逻辑是否严密，思路是否清晰。\n",
      "- 是否有深刻的见解和独特的创意。\n",
      "- 能否引发读者思考，产生共鸣。\n",
      "- 根据逻辑、思辨和创意的表现，给出相应的分数和等级评定。\n",
      "\n",
      "**评分细则**：\n",
      "- 根据上述三个方面，分别给出具体的分数（满分60分）。\n",
      "- 综合考虑作文的整体表现，给出一个总体评价等级（优秀、良好、中等、及格、不及格）。\n",
      "\n",
      "**批改建议**：\n",
      "- 根据作文的优点和不足，给出具体的改进意见和提升方向。\n",
      "- 指出作文中的亮点和需要保持的部分，鼓励作者在今后的写作中继续发挥优势。\n",
      "- 提供一些相关的写作技巧和素材，帮助作者提高写作水平。\n",
      "\n",
      "**请注意**：在给出批改建议和评分时，请务必保持客观、公正和具体。避免使用模糊、笼统的评价语言，确保作者能够明确理解批改结果和提升方向。\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(new_prompt.template)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估 Prompt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在优化完 Prompt 后，SDK 提供了 `evaluate` 方法，可以快速评估不同 Prompt 的质量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qianfan import Completion\n",
    "\n",
    "prompts = [old_prompt, new_prompt]\n",
    "scenes = [\n",
    "    {\n",
    "        \"args\": {\"job\": \"程序员\"},\n",
    "        \"expected\": \"代码\"\n",
    "    },\n",
    "    {\n",
    "        \"args\": {\"job\": \"产品经理\"},\n",
    "        \"expected\": \"用户量\"\n",
    "    }\n",
    "]\n",
    "model = Completion()\n",
    "\n",
    "results = Prompt.evaluate(prompts, scenes, model)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "results 是一个 list，每个元素是一个 PromptEvaluateResult 对象，代表一个 Prompt 的评估结果。可以用 summary 字段获取评估总结。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "程序员\n",
      "【用户期望结果】：\n",
      "\n",
      "1. 清晰明确的提示词：用户需要一个简洁、明确的提示词，以便快速理解需要完成的任务。\n",
      "2. 具体性：用户期望提示词能够提供足够的具体信息，以便生成符合要求的年终报告。\n",
      "3. 通用性：用户希望提示词具有一定的通用性，以便能够适应不同的工作场景和需求。\n",
      "\n",
      "【模型生成结果】：\n",
      "\n",
      "1. 清晰明确：提示词“帮我写一份{job}的年终报告”简洁明了，用户可以快速理解需要完成的任务。\n",
      "2. 具体性：该提示词提供了“job”这一关键词，用户可以根据自己的实际工作情况填写具体的职业或岗位名称，使得生成的年终报告更具针对性。\n",
      "3. 通用性：该提示词中的“{job}”是一个占位符，可以根据不同的工作场景和需求进行替换，具有一定的通用性。\n",
      "\n",
      "【评价】：\n",
      "\n",
      "该提示词模版撰写得相对较好，既简洁明了，又具有一定的具体性和通用性，能够满足用户的需求。如果一定要对模版进行改进，可以考虑增加一些细节方面的提示，例如在“年终报告”前加上“工作总结”等关键词，以更好地引导用户生成符合要求的年终报告。\n",
      "======\n",
      "产品经理\n",
      "根据您提供的模板，以下是对提示词模版撰写质量的评价：\n",
      "\n",
      "1. 清晰度：模版使用了简洁明了的语言，使得用户可以快速理解要求的内容和格式。每个部分都有明确的标题，如“概要”、“成绩”和“挑衅”，这有助于用户组织思路和信息。\n",
      "2. 适应性：模版使用了灵活的占位符，如“{job}”，使得该模版可以适用于多种不同的职位和场景。通过替换占位符，用户可以轻松地生成特定于其职位的年终报告。\n",
      "3. 完整性：模版要求包含所有必要的部分，如“概要”、“成绩”和“挑衅”，以确保报告的全面性。这有助于用户在撰写报告时不会遗漏任何重要信息。\n",
      "4. 数据和指标要求：模版强调了提供相关数据和指标的重要性，这有助于证明该职位的有效性和可操作性。这是年终报告中一个非常关键的部分，因为它为读者提供了具体的信息，以评估该职位的成果和挑战。\n",
      "5. 简洁性：模版提醒用户报告应该简洁明了，这有助于确保报告易于阅读和理解。在撰写报告时，避免冗余和不必要的细节是非常重要的，模版的这一要求有助于实现这一目标。\n",
      "\n",
      "综上所述，该提示词模版撰写质量较高，能够为用户提供清晰、完整和实用的指导，以确保他们能够生成一份出色的年终报告。\n",
      "======\n"
     ]
    }
   ],
   "source": [
    "for scene, result in zip(scenes, results):\n",
    "    print(scene[\"args\"][\"job\"])\n",
    "    print(result.summary)\n",
    "    print(\"======\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "同时也可以通过 scene 字段，获取不同场景下每个 prompt 评估分数与模型输出。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预期输出： 代码\n",
      "评价得分： 0.6875922409817495\n",
      "模型输出： 年度工作总结与展望\n",
      "\n",
      "尊敬的领导和各位同事：\n",
      "\n",
      "我是XXX，一名普通的程序员，很荣幸在这里向大家汇报我今年的工作情况。\n",
      "\n",
      "一、个人概要\n",
      "\n",
      "我从事软件开发工作已有X年，对各种编程语言如Python、Java等有着深厚的功底，同时对数据结构和算法有深入的理解。我的目标是不断提升自己的技术水平，为公司的业务发展提供强有力的支持。\n",
      "\n",
      "二、成绩和挑衅\n",
      "\n",
      "今年，我参与了多个项目的开发，其中最值得一提的是我们团队成功完成了“XX系统”的升级工作。在这个项目中，我负责了核心部分的编程和优化，通过改进算法和提升效率，我们成功地为客户系统带来了20%的性能提升，得到了客户和领导的高度赞扬。\n",
      "\n",
      "然而，我也面临着一些挑战。一方面，随着技术的快速发展，我需要不断学习新的知识和技能，以应对不断变化的开发环境；另一方面，我注意到团队中一些成员对复杂技术的接受程度有限，这在一定程度上制约了我们项目的进展。为此，我感到有必要提升自己的教学和传播能力，以便更好地帮助团队成员提升技术水平。\n",
      "\n",
      "三、程序员的详细说明和目标\n",
      "\n",
      "1. 编程语言和工具：我主要使用Python和Java进行开发，工具包括Git、Jira等项目管理工具，以及各种数据库和云服务。\n",
      "2. 技能提升：今年我特别关注了人工智能和机器学习的相关知识，希望能将这些技术应用到我们的项目中。同时，我也提高了我的英语阅读能力，以便更好地获取国际前沿的技术信息。\n",
      "3. 目标：我希望在明年能够带领我们的团队完成更多的高质量项目，同时提升我们的技术教学能力，帮助更多的团队成员提升技术水平。\n",
      "\n",
      "四、成果和挑战\n",
      "\n",
      "今年，我们团队取得了丰硕的成果。我们参与的多个项目都得到了客户的满意反馈，其中“XX系统”的升级项目更是我们的亮点。我们的代码质量得到了显著提升，错误率下降了30%，这大大提高了我们项目的成功率。\n",
      "\n",
      "然而，我们也面临一些挑战。首先，随着业务的发展，我们的项目数量和复杂度都在增加，这给我们团队带来了很大的工作压力。其次，尽管我们在代码质量和效率上有了一定的提升，但在某些特殊场景下的性能优化仍然是我们需要解决的问题。最后，如何培养和提升团队成员的技术能力也是一个我们需要面对的挑战。\n",
      "\n",
      "五、数据和指标\n",
      "\n",
      "为了证明我们团队的有效性和可操作性，我附上了一些相关的数据和指标：\n",
      "\n",
      "1. 项目成功率：今年我们参与的多个项目中，有85%的项目得到了客户的满意反馈，我们认为这是由于我们在代码质量和效率上的提升。\n",
      "2. 错误率：今年我们的代码错误率相比去年下降了30%，这表明我们的编程质量和效率得到了显著提升。\n",
      "3. 学习资源：我们团队非常重视学习新的技术和知识。今年我们阅读了大量的英文技术文章和书籍，参加了多个线上和线下的技术研讨会。这些学习资源有助于我们跟上技术的发展步伐。\n",
      "\n",
      "以上就是我的年终报告，感谢大家在一年中的支持和帮助。在未来的工作中，我们会继续努力，为公司的业务发展做出更大的贡献。谢谢大家！\n",
      "======\n",
      "预期输出： 用户量\n",
      "评价得分： 0.6793301118887888\n",
      "模型输出： 产品经理年终报告\n",
      "\n",
      "尊敬的领导：\n",
      "\n",
      "我是XXX公司XXX产品经理，在这一年中，我带领团队成功完成了XXX产品的发展、设计、开发、测试和上线工作。以下是我在这一年的工作总结和成果分析，以及对未来挑战的展望。\n",
      "\n",
      "一、产品经理概要\n",
      "\n",
      "姓名：XXX\n",
      "职位：XXX产品经理\n",
      "公司：XXX公司\n",
      "产品名称：XXX产品\n",
      "任职时间：自XXXX年XX月开始\n",
      "\n",
      "二、成绩和挑衅\n",
      "\n",
      "1.成绩\n",
      "\n",
      "（1）产品成功上线：我们成功推出了XXX产品，并获得了广大用户的积极反馈。产品上线以来，用户量持续增长，市场表现良好。\n",
      "（2）团队协作高效：我与研发、设计、市场等部门的紧密合作，保证了项目的顺利进行。在团队的共同努力下，我们的产品开发周期比原计划缩短了20%。\n",
      "（3）用户反馈积极：通过对用户的调研和反馈进行分析，我们不断优化产品功能，提升用户体验。目前，我们的产品满意度高达90%。\n",
      "\n",
      "2.挑战\n",
      "\n",
      "（1）竞争激烈：尽管我们的产品表现良好，但市场上同类竞品层出不穷，这给我们的产品带来了巨大的竞争压力。\n",
      "（2）用户需求变化快：随着市场的变化，用户对产品的需求也在不断变化。我们需要及时调整产品策略，以满足用户的新需求。\n",
      "（3）技术难题：在产品开发过程中，我们遇到了一些技术难题，如数据安全、性能优化等。这些问题需要我们投入更多的资源和时间来解决。\n",
      "\n",
      "三、产品经理目标和成果\n",
      "\n",
      "1.目标\n",
      "\n",
      "（1）提升用户满意度：通过优化产品功能，提升用户体验，我们将努力将用户满意度提高到95%。\n",
      "（2）扩大市场份额：我们将加大市场推广力度，提高产品的知名度和市场占有率。\n",
      "（3）优化技术架构：解决技术难题，提高产品的稳定性和性能，为未来的产品升级打下基础。\n",
      "\n",
      "四、相关数据和指标\n",
      "\n",
      "1.用户增长：产品上线以来，用户数量增长了50%，日活跃用户占比达到了40%。\n",
      "2.市场反馈：在各大应用商店中，我们的产品评分达到了4.5分（满分5分）。\n",
      "3.竞品分析：对市场上同类竞品进行深入分析，了解其优缺点和营销策略。\n",
      "4.技术指标：通过各项性能测试和安全评估，我们的产品达到了预期的技术指标。\n",
      "\n",
      "五、有效性及可操作性验证\n",
      "\n",
      "通过数据分析和市场反馈，我们的产品在市场上表现良好，用户满意度高，市场反响热烈。同时，我们的团队成员也表示，在产品开发过程中，他们的工作效率得到了提高，团队协作更加顺畅。这些数据和反馈都验证了我们在产品管理方面的有效性和可操作性。\n",
      "\n",
      "六、未来展望\n",
      "\n",
      "尽管我们在过去一年中取得了不错的成绩，但面临的挑战仍然不小。我们将继续努力，争取在竞争激烈的市场中取得更大的成功。具体来说，我们将：\n",
      "\n",
      "（1）加强用户需求调研，及时调整产品策略，以满足用户的新需求；\n",
      "（2）加大市场推广力度，提高产品的知名度和市场占有率；\n",
      "（3）持续优化技术架构，解决技术难题，提高产品的稳定性和性能；\n",
      "（4）培养团队成员的创新能力，不断推出新的功能和特性，提升产品的竞争力。\n",
      "\n",
      "感谢领导和同事们在过去一年中的支持和帮助，我们会继续努力，为公司的长远发展贡献力量。\n",
      "\n",
      "此致\n",
      "敬礼！\n",
      "\n",
      "XXX公司XXX产品经理 XXX\n",
      "XXXX年XX月XX日\n",
      "======\n"
     ]
    }
   ],
   "source": [
    "scene_list = results[1].scene\n",
    "for scene in scene_list:\n",
    "    print(\"预期输出：\",scene['expected_target'])\n",
    "    print(\"评价得分：\", scene['score'])\n",
    "    print(\"模型输出：\", scene['response'])\n",
    "    print(\"======\")\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py311",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "f553a591cb5da27fa30e85168a93942a1a24c8d6748197473adb125e5473a5db"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
